■ コンパレータ
■ 外部リファレンスをつかったコンパレータ
<試作品仕様>
・ 外部リファレンス電圧として、基準電圧2.4Vを
<試作品回路図>(→回路図のPDFファイル)
PIC18F87K90をつかった場合の回路図を以下に示します。
<試作品外観>下記の写真には上記回路図にはない、また本テーマと関係のない部品が多々写っています
<プログラム例> #include <p18f87K90.h> #include <stdio.h> #include <delays.h> #include <timers.h> #include <pwm.h> #include <portb.h> #pragma config FOSC = XT //FOSC = HS // システムクロック=1MHz #pragma config XINST = OFF #pragma config WDTEN = OFF //configではウォッドックタイマOFF //WDTCONレジスタSWDTENビットでスリープ時WDTをOFFに制御 void main (void) { TRISJbits.TRISJ0 = 0; TRISFbits.TRISF5 = 1; TRISFbits.TRISF2 = 0; //コンパレータ設定 //Comparator Control 1 Register (CM1CON レジスタ) CM1CONbits.CON = 0; //1: enable コンパレータイネーブル Comprator Enable nit CM1CONbits.COE = 0; //1: output enable //コンパレータ1の出力がC1OUT ピンに現れる// // CM1CONbits.CON = 1; //1: enable コンパレータイネーブル Comprator Enable nit CM1CONbits.COE = 1; //1: output enable //★★ コンパレータ1の出力がC1OUT ピンに現れる //0: output disable //★★ コンパレータ1の出力がC1OUT ピンに現れない CM1CONbits.CPOL = 0; //0: not invert //コンパレータ極性セレクトビット CM1CONbits.EVPOL0 = 0; //00:コンパレータ出力に伴う割り込み発生なし// Interrupt generation is disable //Interrupt polality select bit CM1CONbits.EVPOL1 = 0; CM1CONbits.CREF = 1; //1: Comparetor Reference Select bit //enable //★★ 外部リファレンス電圧を使用 CM1CONbits.CCH1 = 0; //00: Comparator Chanel Select Bit //★★ C1INB pinを使用する旨 設定 CM1CONbits.CCH0 = 0; //Comparator Voltage Reference Control Register(CVRCON レジスタ) CVRCONbits.CVREN = 1; //0: コンパレータレファレンス制御レジスタ ON //Comparator Reference Enable bit CVRCONbits.CVROE = 0; //1: 内蔵Vref OFF //Comparator Vref Output Enable bit//外部リファレンス電圧を使っているので内蔵VREFはOFFでよい CVRCONbits.CVRSS = 1; //1: コンパレータリファレンスソースCVref = Vref+ - Vref- //Comparator Vref Source Select bit //★★ 差動でなく外部入力Refを使う時は、Verf-は 0vに接続する必要がある。 //0: PICの電源電圧 CVref = AVdd - AVss CVRCONbits.CVR4 = 1; //10000: 16 コンパレータのシュレッシュホールドレベル Comparator Vref Value Selection bit CVRCONbits.CVR3 = 0; //★★ スレッシュホールド電圧の設定: CVref = Vref- + (Vref+ - Vref-) × CVR<4:0>/32 CVRCONbits.CVR2 = 0; // CVref = 2.4v × (0b10000)/32 = 2.4v × 16/32 = 1.2v CVRCONbits.CVR1 = 0; // CVRCONbits.CVR0 = 0; // CM1CONbits.CON = 1; //1: enable コンパレータイネーブル Comprator Enable nit while (1) { if(CMSTATbits.CMP1OUT == 1) //電流が0.1mA以上の場合// 電流有無検出 { LATJbits.LATJ0 = 0; //コンパレータレベルチェック用LED } else { LATJbits.LATJ0 = 1; //コンパレータレベルチェック用LED } } } <実行結果> スレッシュホールド電圧 12vを 境にON/OFFした結果を以下に示す。 尚、Vref- を0Vに接続しないと スレッシュホールド電圧は リファレンス電圧となる。
コンパレータ リファレンス電圧測定 (Vref+(27pin)電圧) |
||
・C1OUT(18pin) ・RJ0(62pin) |
LED OFF コンパレータ入力電圧 =13.05v (C1INB(15pin)電圧) |
|
LED ON コンパレータ入力電圧 = 11.07v (C1INB(15pin)電圧) |